package com.longe.controller;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    /**
     * 使用注解配置熔断保护
     * fallbackMethod : 配置熔断之后的降级方法
     */
    @HystrixCommand(fallbackMethod = "consumerFallBack")
    @RequestMapping("consumer")
    public String consumer(){
        String result = restTemplate.getForObject("http://provider-server/provider", String.class);
        return result;
    }

    /**
     * 降级方法
     * 和需要收到保护的方法的返回值一致(我这里用来保护上面的consumer()方法)
     * 方法参数一致
     */
    public String consumerFallBack() {
        return "大兄弟,触发降级方法了......";
    }
}